Kahn's algorithm